package com.feihao.zhou.demo01;

import java.lang.reflect.Constructor;

public class MyReflectDemo {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException {

        //      三种获得Class类的方法
//        Class clazz = Class.forName("com.feihao.zhou.demo01.Student");
//        Class clazz = Student.class;
        Class<? extends Student> clazz = new Student().getClass();

        //获取类中的所有非私有构造方法
        Constructor[] constructors = clazz.getConstructors();

        System.out.println("获取类中的所有非私有构造方法");
        for (Constructor constructor : constructors) {
            System.out.println(constructor);
        }


        //获取所有的构造方法
        Constructor[] declaredConstructors = clazz.getDeclaredConstructors();
        System.out.println("获取所有的构造方法");
        for (Constructor declaredConstructor : declaredConstructors) {
            System.out.println(declaredConstructor);
        }

        //获取指定参数的构造方法：
        Constructor constructor = clazz.getConstructor(String.class, int.class);
        System.out.println("获取指定2个参数的构造方法"+constructor);

//        Constructor constructor1 = clazz.getConstructor(String.class);
//        Constructor constructor1 = clazz.getConstructor(int.class);//私有构造无法获取
        Constructor constructor1 = clazz.getConstructor();
        System.out.println("空参构造"+constructor1);
    }
}
